1 /*
2 * File: Heading_Mode.c
3 *
4 * Code generated for Simulink model 'Heading_Mode'.
5 *
6 * Model version : 1.146
7 * Simulink Coder version : 8.5 (R2013b) 08-Aug-2013
8 * C/C++ source code generated on : Mon Feb 03 08:13:34 2014
9 *
10 * Target selection: ert.tlc
11 * Embedded hardware selection: 32-bit Embedded Processor
12 * Code generation objectives: Unspecified
13 * Validation result: Not run
14 */
15
16 #include "Heading_Mode.h"
17 #include "Heading_Mode_private.h"
18
19 /* Output and update for referenced model: 'Heading_Mode' */
20 void Heading_Mode(const real_T *rtu_PsiRef, const real_T *rtu_Psi, const real_T *
21 rtu_TAS, real_T *rty_PhiCmd, rtB_Heading_Mode *localB, real_T
22 rtp_hdgGain)
23 {
24 real_T rtb_sum;
25 real_T y;
26
27 /* Sum: '<S1>/sum' */
28 rtb_sum = (*rtu_PsiRef) - (*rtu_Psi);
29
30 /* Signum: '<S1>/signum' */
31 if (rtb_sum < 0.0) {
32 y = -1.0;
33 } else if (rtb_sum > 0.0) {
34 y = 1.0;
35 } else {
36 y = rtb_sum;
37 }
38
39 /* Sum: '<S1>/sum1' incorporates:
40 * Abs: '<S1>/abs'
41 * Constant: '<S1>/constant'
42 * Constant: '<S1>/constant1'
43 * Product: '<S1>/product'
44 * Product: '<S1>/product1'
45 * Product: '<S1>/product2'
46 * Rounding: '<S1>/floor'
47 * Signum: '<S1>/signum'
48 * Sum: '<S1>/sum2'
49 */
50 localB->hdgError = rtb_sum - (y * (floor((fabs(rtb_sum) + 180.0) / 360.0) *
51 360.0));
52
53 /* Product: '<Root>/Product' incorporates:
54 * Gain: '<Root>/Disp Gain'
55 *
56 * Block requirements for '<Root>/Product':
57 * 1. 1.10. Heading Performance
58 *
59 * Block requirements for '<Root>/Disp Gain':
60 * 1. 1.10. Heading Performance
61 */
62 *rty_PhiCmd = (rtp_hdgGain * localB->hdgError) * (*rtu_TAS);
63 }
64
65 /* Model initialize function */
66 void Heading_Mode_initialize(rtB_Heading_Mode *localB)
67 {
68 /* Registration code */
69
70 /* block I/O */
71 (void) memset(((void *) localB), 0,
72 sizeof(rtB_Heading_Mode));
73 }
74
75 /*
76 * File trailer for generated code.
77 *
78 * [EOF]
79 */
80
|